package com.umgsai.wx.backend.test;

import java.util.List;

public class IsPalindrome {

    /**
     * 验证回文串
     * 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
     * <p>
     * 说明：本题中，我们将空字符串定义为有效的回文串。
     * <p>
     *  
     * <p>
     * 示例 1:
     * <p>
     * 输入: "A man, a plan, a canal: Panama"
     * 输出: true
     * 解释："amanaplanacanalpanama" 是回文串
     * 示例 2:
     * <p>
     * 输入: "race a car"
     * 输出: false
     * 解释："raceacar" 不是回文串
     * <p>
     * 作者：力扣 (LeetCode)
     * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions/xah8k6/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */
    public static void main(String[] args) {
//        String s = "A man, a plan, a canal: Panama";
//        String s = "race a car";
//        String s = " ";
        String s = "0P";
        System.out.println(isPalindrome(s));
    }

    public static List<List<String>> partition(String s) {

        return null;
    }

    public static boolean isPalindrome(String s) {
        if (s == null) {
            return false;
        }
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (isLegalChar(s.charAt(i))) {
                stringBuilder.append(s.charAt(i));
            }
        }
        if (stringBuilder.length() == 0) {
            return true;
        }

        int headIndex = 0;
        int tailIndex = stringBuilder.length() - 1;
        while (headIndex <= tailIndex) {
            if (!String.valueOf(stringBuilder.charAt(headIndex)).equalsIgnoreCase(String.valueOf(stringBuilder.charAt(tailIndex)))) {
                return false;
            }
            headIndex++;
            tailIndex--;
        }
        return true;
    }

    public static boolean isLegalChar(char a) {
        if (a >= 'a' && a <= 'z') {
            return true;
        }
        if (a >= 'A' && a <= 'Z') {
            return true;
        }
        if (a >= '0' && a <= '9') {
            return true;
        }
        return false;
    }
}
